<?php
class Admin_CategoryController extends Zend_Controller_Action{
	public $_model = null;
	public function init(){
		
		$this->_model = new Application_Model_DbTable_Category();
	}
	
	public function indexAction(){
		
		
		$filters = array();
		$keyword = $this->_request->getParam('keyword','');
		$filters['keyword']=$keyword;
		$this->view->keyword = $keyword;
		
		// từ ngày
		$fromDate = $this->_request->getParam('fromDate',null);
		//$filters['fromDate']=Cms_String_String::getIntFromDate($fromDate);
		$filters['fromDate']=Cms_String_String::getDateFromString($fromDate);
		$this->view->fromDate = $fromDate;
		
		// đến ngày
		$toDate = $this->_request->getParam('toDate',null);
        
		//chuyển về định dạng của mysql
		$filters['toDate']=Cms_String_String::getDateFromString($toDate,'last');
		$this->view->toDate = $toDate;
		
		// sắp xếp | order
		$order = $this->_request->getParam('order',"");
		if($order!=""){
			list($orderBy,$orderType) = explode('-', $order);
		}else{
			$orderBy=null;
			$orderType=null;
		}
		
		
		$list = $this->_model->getList($filters,$orderType,$orderBy);
		//get item count per page
		$icpp = $this->_request->getParam('icpp',20);
		
		//get current page number
		$currentPage = $this->_request->getParam('page',1);
		
		// pagination
		$paginator = Zend_Paginator::factory($list);
		$paginator->setCurrentPageNumber($currentPage);
		$paginator->setItemCountPerPage($icpp);
		$paginator->setPageRange(5);
		
		//assign to view
		$this->view->paginator=$paginator;
	}
	
	public function insertAction(){
		$form = new Admin_Form_InsertCategory();
		if($this->_request->isPost()){
			if($form->isValid($this->_request->getPost())){		
				$row = $this->_model->createRow($this->_request->getPost());
				$row->category_alias = Cms_String_String::toAlias($row->category_name_en);
				$row->category_creation_time = date('Y-m-d H:i:s');
				// save to database
				$row->save();
				$this->_helper->flashMessenger('Thêm phân loại|danh mục thành công!');
				$this->_helper->redirector('index','category','admin');
			}
		}
		$this->view->form=$form;
	}
	
	public function updateAction(){
		//get id from request
		$id = $this->_request->getParam('id');
		
		//lấy đối đượng dựa vào id
		$select = $this->_model->select()->where('category_id = ?',$id);
		$row = $this->_model->fetchRow($select);
		
		if(!$row){
			echo "<p align=center>Dữ liệu không tồn tại!</p>";
		}else{
			$form = new Admin_Form_InsertCategory();
			if($this->_request->isPost()){
				if($form->isValid($this->_request->getPost())){
						
					//lấy tất cả giá trị trong form
					$params = array();
					$params= $form->getValues();
					
					//hủy bỏ giá trị không cần thiết
					unset($params['category_id']);
					$params['category_alias']=Cms_String_String::toAlias($params['category_name_en']);
								
					$this->_model->update($params,"category_id = {$id}");
					$this->_helper->flashMessenger('Cập nhật sản phẩm thành công!');
					$this->_helper->redirector('index','category','admin');
				}
			}
			$row = $this->_model->fetchRow($select);
			$form->populate($row->toArray());
			
			$this->view->form = $form;
		}
	}
	
	public function deleteAction(){
	    $mdProduct = new Application_Model_DbTable_Product();
        
		$status = 0;
		$id = @(array)$this->_request->getParam('id');
		$rows = $this->_model->fetchAll($this->_model->select()->where('category_id IN (?)',$id));
		if(count($rows)>0){
			foreach($rows as $row){
                $check = $mdProduct->fetchAll("product_category_id = ".$row['category_id']);
                if($check){
                    $this->_helper->flashMessenger('Xóa dữ liệu thất bại [ sản phẩm đã tồn tại ]');
                }else{
                    $row->delete();
					$status = 1;
                }
                
			//	try{
//					$row->delete();
//					$status = 1;
//				}catch(Exception $e){
//					$this->_helper->flashMessenger('Xóa d? li?u Th?t b?i! [error:'.$e->getCode().']');
//				}
                
				
			}
			$this->_helper->flashMessenger('Xóa dữ liệu thành công!');
			$this->_helper->redirector('index','category','admin');
		}

	}
}




